package chapter02

object Test01_FunctionDefine {
  def main(args: Array[String]): Unit = {
    //无参无返回值
    def f1():Unit={
      println("你好")
    }
    f1()
    //无参 有返回值
    def f2():String={
       "你好"//return可以省略
    }
    val str = f2()
    println(str)
    //有参数 有返回值
    def f3(a:String,b:Int):String={
      a+b
    }
    val str1 = f3("你好", 3)
    println(str1)
    //可变长参数
    def f4(names:String*): Unit = {
      println(names)
      for(i<-names){
        println(i)
      }
    }
    f4("刘","郭","黎明","张")
    f4("刘德华")
    //可变参数的位置 要在普通参数之前
    def f5(name:String,names:String*): Unit = {
      println(name,names)
    }
    f5("吴彦祖","刘","郭","黎明","张")
    //默认参数 可以将参数指定一个默认值
    def f6(name:String,age:Int=20): Unit = {
      println(name+age)
    }
    f6("张三")
    f6("李四",25)
    //带名参数 可以指定参数名，可以调换参数位置
    f6(age=25,name="王五")
  }
}
